Computer systems typically include at least one processor and at least one storage device. Michael Flynn, an American electrical engineer, distinguished four classes of processor architectures in 1966. The four classes include: single instruction stream, single data stream (SISD), multiple instruction stream, single data stream (MISD), single instruction stream, multiple data stream (SIMD), and multiple instruction stream, multiple data stream (MIMD). All of the above architectures have commercial implementations except for the MISD architecture.
Various computer applications require high levels of information security, reliability, and/or integrity. Security requires that non-secure resources cannot access secure data. Reliability and integrity requires that accurate operations of each routine is maintained as multiple routines are performed. For example, computing systems operating in the areas of national security, finance, avionics, defense, etc. require computers that do not allow the intentional or accidental corruption of data, the inappropriate modification of data, or unauthorized viewing of data.
When executing a single application or multiple applications, the microprocessor may simultaneously execute multiple threads of a program. A thread is a sequence of code within a program or a software routine. The execution of multiple threads increases the unpredictability of the computing system and the process.
In conventional computer systems, integrity and reliability can be adversely affected when multiple execution threads are running in a particular process. One thread can consume a large number of processing resources or processing time, thereby limiting the amount of processing resources and processing time that can be devoted to other threads. Such a situation can prevent other threads from being completed in accordance with necessary reliability and integrity requirements.
To increase computing efficiency, computer systems often utilize multiple processing techniques which execute two or more applications (i.e., software programs) simultaneously on a single microprocessor. The single microprocessor often includes multiple, integrated execution units. Conventionally, it is difficult to execute multiple applications on a single processor and yet be able to guarantee data security, reliability and integrity.
One conventional computing technique for increasing security, integrity and reliability is to provide a computer system that utilizes a restricted single processor. The restricted single processor is restricted to executing a single program.
In such a conventional computer system, the restricted single processor includes processing resources such as a CPU, memory, and an input/output (I/O). Each processing resource is designed to communicate with other processing resources on non-interfering basis. Techniques, such as, processor-initiated direct memory access (DMA) are not generally allowed in the interests of security, integrity and reliability.
Such a conventional technique is an inefficient usage of processing capability because many applications are non-complex and the abilities of the processing resources are effectively wasted. Further, this technique requires more processors, memory devices, etc. to perform the same tasks which in turn require larger power consumption and larger sizes. Such conventional techniques are less desirable in situations such as embedded applications where smaller power consumption, size and weight are a significant design consideration.
Other conventional computing systems have utilized ring protective resources (a security ring architecture). A security ring architecture can utilize memory mapping and increased levels of security for each process. Priority, capabilities, and access are given to each process depending upon its required security or level of confidence. However, such systems still cannot guarantee inadvertent access to secured data.
Ensuring system security in a conventional system using ring protective resources is difficult. This difficulty is increased under exceptional conditions, such as, memory protection faults, interrupts, exceptions, and other conditions. For example, a high priority process could eliminate other processes from executing. A lower priority process could be prevented from executing if one of the processing resources operates other than as predicted and/or consumes a large amount of processing time, or other resources.
Thus, there is a need for a processor architecture that provides greater security, reliability, and integrity and is low cost, efficient, and compact. Further still, there is a need for a processor architecture optimized for at least one of security, integrity, and reliability. Further still, there is a need for a secure, highly reliable embedded processing system. Further, there is a need for a non-conventional processor architecture optimized for at least one of security, integrity, or reliability.